package com.lovo.stock.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.UUID;

/**
 * 文件处理工具类
 */
public class FileUtils {
    private static String absolutePath="C:/Study/StageTwo/L14-stockProject/img/";

    /**
     * 上传文件公共方法
     * @param file 文件对象
     * @param obj 当前控制器
     * @return 文件的名称
     * @throws IOException
     */
    public static String uploadFile(MultipartFile file,Object obj) throws IOException {
        //获取文件上传前的名称
        String sourceName=file.getOriginalFilename();
        //截取文件后缀名
        String suffixName=sourceName.substring(sourceName.lastIndexOf("."));

        //组装文件在服务器存在的最终文件名
        //UUID是一个随机的字符串这个字符串重复的概率趋于零
        String newFileName= UUID.randomUUID()+suffixName;

        //获取文件存放服务器的路径
        //URL得到当前static/images的真实路径对象
        URL url=obj.getClass().getClassLoader().getResource("static/images");

        //解码：服务器存放路径很多时候喜欢中文命名，为了防止乱码需要设置
        //钟文杰骂我，只要路径不是中文一般不用设置
        String path= URLDecoder.decode(url.getFile(),"utf-8");

        //拷贝文件
        //file源文件对象，方法中参数是目标文件对象
        file.transferTo(new File(path+"/"+newFileName));

        return newFileName;
    }

    public static String uploadFileAbsolute(MultipartFile file) throws IOException {
        //获取上传文件的名称
        String fileName=file.getOriginalFilename();
        //得到文件后缀名
        String suffixName=fileName.substring(fileName.lastIndexOf("."));
        //得到文件新名称
        String newFileName=UUID.randomUUID()+suffixName;

        file.transferTo(new File(absolutePath+newFileName));
        return newFileName;
    }
}
